工厂方法和抽象工厂 一般来说我们都会用 new 操作符直接创建对象,这本身没什么问题,但是当我们的系统存在很多的具体类,实例化哪个取决于运行时的一些条件。比如根据类型创建不同的产品 if (a) { return new ProductA() } else if (b) { return new ProductB() } else if (xxx) ...
工厂方法和抽象工厂 一般来说我们都会用 new 操作符直接创建对象,这本身没什么问题,但是当我们的系统存在很多的具体类,实例化哪个取决于运行时的一些条件。比如根据类型创建不同的产品 if (a) { return new ProductA() } else if (b) { return new ProductB() } else if (xxx) ...
多态 某些时候,在享受静态语言类型检查带来的安全性的同时,我们亦会感觉被束缚住了手脚。为了解决这一问题,静态类型的面向对象语言通常被设计为可以向上转型:当给一个类变量赋值时,这个变量的类型既可以使用这个类本身,也可以使用这个类的超类。这就像我们在描述天上的一只麻雀或者一只喜鹊时,通常说“一只麻雀在飞”或者“一只喜鹊在飞”。但如果想忽略它们的具体类型,那么也可以说“一只鸟在飞” ...